Di seguito andremo ad analizzare la parte di codice di Matlab adibito alla comunicazione con l’Arduino. Inoltre esso ha il compito di salvare, elaborare e visualizzare le misure eseguite dall’impedenzimetro.
Ora andremo ad analizzare i segmenti di codice più rilevanti:
- Cerco eventuali seriali aperte e le chiudo per sicurezza

- Cerco la seriale usata per comunicare con Arduino e provvedo ad aprirla

- Imposto la frequenza di sweep da 1kHz a 100kHz con passo di 1kHz e aspetto la conferma da parte di arduino mediante il carattere ‘o’

- Comincio a ricevere le misure di tensione e corrente del DUT e le salvo negli Array denominati ‘IRE’, ‘VRE’,’IIM’ e ‘VIM’ che conterranno il la parte reale e immaginaria delle tensioni e delle correnti sul DUT. Ovviamente dovrò salvare anche i guadagni usati per amplificare i vari segnali e questi verranno salvati in vettori che hanno come prima lettera la ‘G’. Le lettere successive stanno ad indicare solamente se l’array contiene un amplificazione per una misura di corrente o di tensione e se essa è di tipo reale o immaginaria.

- Successivamente converto i dati tenendo conto delle amplificazioni e ottengo lemisure di corrente e tensione del DUT con i rispettivi valori di impedenza e di fase. Infine vado a graficare con la funzione plot_f i vari diagrammi di bode.

Ora andremo ad analizzare le parti di codice più rilevanti usate da Arduino per la misura di correnti e di tensioni del DUT:
- Innanzitutto dobbiamo settare il convertitore analogico digitale per la lettura delle misure, l’interfaccia SPI per implementare la comunicazione con il DDS e infine la seriale per poter comunicare con lo script di Matlab

- Successivamente è stata implementata una macchina a stati finiti adibita alla comunicazione con Matlab, al settaggio dei guadagni dei vari amplificatori e alla lettura automatica delle misure di corrente e tensione del DUT

- In questo frammento di codice, che è il prosegue del precedente, vengono richiesti da Arduino a Matlab i vari settaggi dello sweep di frequenza e il passo da usare per eseguire le misure

- In questo frammento di codice viene mostrato come vengono eseguite le misure.Innanzitutto si parte con la misura della parte reale della tensione e della corrente ai capi del DUT, andando a settare i vari guadagni in modo tale da coprire l’intero range del convertitore analogico digitale e diminuendo così il rapposto segnale rumore:

- Successivamente si esegue la misura della parte immaginaria di tensione e corrente del DUT:
- Le misure verranno fermate una volta che si è raggiunto il valore massimo di frequenza al quale si vuole sottoporre il DUT

- Il seguente codice invece implementa la comunicazione di Arduino con il DDS mediante l’uso del protocollo SPI.

- Converto il valore di frequenza in una sequenza di due pacchetti ognuno formato da sedici bit

- Calcolo la fase e la converto in due pacchetti da sedici bit da inviare al DDS

- Imposto il DDS in ascolto e invio i dati al DDS tramite SPI mandando prima il pacchetto contenente gli MSB e successivamente gli LSB

- Una volta che i pacchetti sono stati inviati impongo a uno il bit di start del registro interno del DDS

- Dato che vengono usati due DDS per generare due sinusoidi in quadratura si è pensato di realizzare un piccolo script che permette di settare i registri interni di uno solo dei due DDS o entrambi contemporaneamente
